﻿select * from AccountInfo  --个人信息
select * from BankCard  --银行卡信息
select * from CardStateChange  --银行卡状态更改表
select * from CardTransfer  --转账表
select * from CardExchange  --交易记录
--#### 变量

--1. 为赵云此人进行开户开卡操作，赵云身份证：420107199904054233
insert into AccountInfo values(420107199904054233,13456789654,'赵云','2022-09-22 16:46:00') ;
--2. 需要求出张飞的银行卡卡号和余额，张飞身份证：420107199602034138  （1.使用连接查询，2.使用变量）
declare @acccode varchar(18)
set @acccode =420107199602034138
select CardNo,cardmoney from AccountInfo a 
inner join BankCard b on a.AccountId=b.AccountId
where AccountCode=@acccode;
--#### 逻辑控制

--##### 条件分支if-else

--​	3.某用户银行卡号为“6225547854125656”，该用户执行取钱操作，取钱5000元，余额充足则进行取钱操作，并提示"取钱成功"，否则提示“余额不足”。
declare @cm int
select @cm = CardMoney from BankCard where CardNo=6225547854125656
if(@cm>=5000)
begin
update  bankcard set CardMoney=CardMoney-5000 where CardNo=6225547854125656
print '取钱成功'
end
else
print'余额不足';
--##### 条件分支:case-when

--​	4.查询银行卡信息，将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”，
--并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户"，  

----显示列分别为卡号，身份证，姓名，余额，用户等级，银行卡状态。
select CardNo,accountcode,realname,cardmoney,CardState,
case when CardState=1 then  '正常'
when CardState=2 then  '挂失'
when CardState=3 then  '冻结'
when CardState=4 then  '注销' end 银行卡状态,
case when CardMoney<300000 then '普通用户'
when CardMoney>=300000 then 'VIP用户'end 用户等级
from BankCard b 
inner join AccountInfo a on a.AccountId=b.AccountId
;
--##### **while**

--​	5.循环打印1-10。
declare @i int =0
while(@i<10)
begin
	set @i+=1
	print @i
	end;
--​	6.打印99乘法表
declare @a int,
 @b int,
 @str varchar (1000)
set @a = 1
while @a <= 9
begin
  set @b = 1
  set @str = ''
  while @b <=@a
    begin
        set @str =@str + CONVERT (varchar(1) ,@b) + '*' + CONVERT (varchar(1) ,@a) + '=' + CONVERT (CHAR(2) ,@a *@b) + '  '
        set @b =@b + 1
      end 
      print @str
        set @a =@a + 1
end